package org.dromara.tearoom.mapper;

import cn.hutool.core.map.MapUtil;
import com.github.yulichang.toolkit.MPJWrappers;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.tearoom.domain.TerCoupon;
import org.dromara.tearoom.domain.vo.TerCouponVo;

import java.util.Collection;
import java.util.List;
import java.util.Map;

import static org.dromara.common.core.utils.CollectionUtils.convertMap;

/**
 * 优惠劵Mapper接口
 *
 * @author ckj
 * @date 2025-04-23
 */
public interface TerCouponMapper extends BaseMapperPlus<TerCoupon, TerCouponVo> {

    default Map<Long, Integer> selectCountByUserIdAndTemplateIdIn(Long userId, Collection<Long> templateIds) {
        String templateIdAlias = "templateId";
        String countAlias = "count";
        List<Map<String, Object>> list = selectMaps(MPJWrappers.lambdaJoin(TerCoupon.class)
                .selectAs(TerCoupon::getTemplateId, templateIdAlias)
                .selectCount(TerCoupon::getId, countAlias)
                .eq(TerCoupon::getUserId, userId)
                .in(TerCoupon::getTemplateId, templateIds)
                .groupBy(TerCoupon::getTemplateId));
        return convertMap(list, map -> MapUtil.getLong(map, templateIdAlias), map -> MapUtil.getInt(map, countAlias));
    }


}
